package DataStr.homework02.h2;

import java.util.Stack;

public class ex02 {
    //2、给定一个字符串str，设计一个算法采用顺序栈判断str是否为形如“序列1@序列2”的合法字符串，
    // 其中序列2是序列1的逆序，在str中恰好只有一个@字符。
    public boolean isreaver(String s){
        //获取字符串长度
        int len=s.length();
        //获取中间字符
        char mid=s.charAt(len/2);
        //判断中间字符是否=@
        if(mid!='@'){
            return false;
        }
        //创建一个栈
        Stack<Character>stack=new Stack<>();
        //将前半部分字符串存入栈
        for(int i=0;i<len/2;i++){
            stack.push(s.charAt(i));
        }
        //将前半部分字符弹出栈与后半部分字符串判断是否相等，利用了栈先进后出的特点
        for(int i=len/2+1;i<len;i++){
            if(stack.isEmpty()||stack.pop()!=s.charAt(i)){
                return false;
            }
        }
        //如果所有字符都匹配返回true
        return true;
    }
    public static void main(String[]args){
        String s="abc1cba";
        ex02 e=new ex02();
        if(e.isreaver(s)){
            System.out.println(s+"为合法字符串");
        }else{
            System.out.println(s+"为非法字符串");
        }
    }
}
